<?php
//  @arquivo = /controller/ImagemController.php
//  MVC : controller
//  objeto : ImagemNoticia

require_once($_SERVER['DOCUMENT_ROOT'] . '/Prototipo/modelo/ImagemNoticia.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/Prototipo/modelo/Imagem.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/Prototipo/modelo/ImagemDenuncia.php');
require_once($_SERVER['DOCUMENT_ROOT'] . '/Prototipo/conexao/ConexaoBanco.php');

require_once($_SERVER['DOCUMENT_ROOT'] . '/Prototipo/libs/WideImage/WideImage.php');

class ImagemController{
	private $imagemNoticia;
	private $banco;
	
	public function __construct(){
		$this->banco = new ConexaoBanco();
		$this->imagemNoticia = new ImagemNoticia();
	}
	
	/* cadastrar noticia */
	public function cadastrar($imagem) {
		$this->banco->conectar();
			
		try {
			$sql = "INSERT INTO imagem_noticia (id_imagem_noticia, nome_arquivo, diretorio, tamanho, legenda, noticia_id)
					VALUES
					('',
					'".$imagem->getNome()."',
					'".$imagem->getDiretorio()."',
					'".$imagem->getTamanho()."',
					'".$imagem->getLegenda()."',
					'".$imagem->getNoticiaId()->getIdNoticia()."')";
			//echo $sql;
	
			$this->banco->executarSql($sql);
			//return mysql_insert_id(); //retorna o ultimo id cadastrado
	
			//if($retorno == TRUE){
				//redireciona para uma pagina ou manda mensagem ao usuÃ¡rio
			//}
			//else{
				//manda msg de erro ao usuario
			//}
	
		} catch (Exception $e) {
			$e->getMessage();
		}
		$this->banco->desconectar();
	}
	
	public function cadastrarImagemDenuncia(ImagemDenuncia $imagem) {
		
			
		try {
			$sql = "INSERT INTO `imagem_denuncia` (`id_imagem_denuncia`, `diretorio`, `nome`, `denuncia_id`)
					VALUES
					('',
					'".$imagem->getDiretorio()."',
					'".$imagem->getNome()."',
					'".$imagem->getDenuncia()->getIdDenuncia()."')";
			//echo $sql;
			$this->banco->conectar();
			if($this->banco->executarSql($sql)){
				
				$this->banco->desconectar();
				return true;
			}
			else{
				$this->banco->desconectar();
				return false;
				
			}
			//$id = mysql_insert_id();
			
		return ;
		} catch (Exception $e) {
			$e->getMessage();
		}
		
	}
	
	public function cadastrarImagemProcurado(ImagemProcurado $imagem) {
	
			
		try {
			$sql = "INSERT INTO `imagem_procurado`(`id_imagem_procurado`, `nome`, `diretorio`, `procurado_id`) VALUES
					('',
					'".$imagem->getNome()."',
					'".$imagem->getDiretorio()."',					
					'".$imagem->getProcurado()->getId()."')";
			//echo $sql;
			$this->banco->conectar();
			$this->banco->executarSql($sql);
			$this->banco->desconectar();
	return $sql;
		} catch (Exception $e) {
			$e->getMessage();
		}
	
	}
	
	public function cadastrarImagemDesaparecido(ImagemDesaparecido $imagem) {
		
			
		try {
			$sql = "INSERT INTO `imagem_desaparecido`(`id_imagem_desaparecido`, `diretorio`, `nome`, `desaparecido_id`)
					VALUES
					('',
					'".$imagem->getDiretorio()."',
					'".$imagem->getNome()."',
					'".$imagem->getDesaparecido()->getId()."')";
			//echo $sql;
			$this->banco->conectar();
			$this->banco->executarSql($sql);
			$this->banco->desconectar();
	
		} catch (Exception $e) {
			$e->getMessage();
		}
	
	}
	
	// funÃ§Ã£o para redimencionar e mover a imagem para o servidor web AlÃ©m de carregar o objeto imagem que 
	// NÃƒO SERÃ� PADRÃƒO =/
	public function tratarImagemWideImage($imagem){
		if(isset($imagem['name'])){
			
			
			$img = WideImage::load($imagem['tmp_name']); 
			//print_r($img);
			$img = $img->resize(640, 480, 'inside', 'any'); // redimensiona a imagem sem distorÃ§Ã£o
			
			// carrega o objeto imagem
			$i = new ImagemNoticia();
				$alteraNome = mktime().'_'.$imagem['name']; // encripta o nome da imagem antes de ser salvo
			$i->setNome($alteraNome);
			$i->setDiretorio("../img/noticias/".date('Y-m-d')."/");
			
			// $uploadDir serve para verificar o diretorio onde serÃ¡ salvo.
			$uploadDir = $_SERVER['DOCUMENT_ROOT']."/Prototipo/visao/img/noticias/".date('Y-m-d')."/";
			
			if(is_dir($uploadDir)){
				$img->saveToFile($uploadDir.$i->getNome(), 90); // salva a imagem renomeada diretorio indicado com 90% de qualidade
			}
			else{
				mkdir($uploadDir); 		// se o diretorio nao existir, cria um antes de salvar a imagem
				$img->saveToFile($uploadDir.$i->getNome(), 90);
			}
			
			return $i; 
		}
		
	}
	
	//imagemDenuncia
	public function tratarImagemWideImageII($imagem){
		if($imagem != ''){
		
			
			$img = WideImage::load($imagem['tmp_name']);
			//print_r($img);
			$img = $img->resize(640, 480, 'inside', 'any'); // redimensiona a imagem sem distorÃ§Ã£o
				
			// carrega o objeto imagem
			$i = new ImagemDenuncia();
			$alteraNome = time().'_'.$imagem['name']; // encripta o nome da imagem antes de ser salvo
			$i->setNome($alteraNome);
			$i->setDiretorio("../img/denuncias/".date('d-m-Y')."/");
		
			$uploadDir = $_SERVER['DOCUMENT_ROOT']."/Prototipo/visao/img/denuncias/".date('d-m-Y')."/";
				
			if(is_dir($uploadDir)){
				$img->saveToFile($uploadDir.$i->getNome(), 90); // salva a imagem renomeada diretorio indicado com 90% de qualidade
			}
			else{
				mkdir($uploadDir); 		// se o diretorio nao existir, cria um antes de salvar a imagem
				$img->saveToFile($uploadDir.$i->getNome(), 90);
			}
				
			return $i; // retorna o objeto imagem com diretorio e nome
		}
	
	}
	public function tratarImagemWideImageDesaparecido($imagem){
		if(isset($imagem)){
	
	
			$img = WideImage::load($imagem['tmp_name']);
			//print_r($img);
			$img = $img->resize(640, 480, 'inside', 'any'); // redimensiona a imagem sem distorÃ§Ã£o
	
			// carrega o objeto imagem
			$i = new ImagemDesaparecido();
			$alteraNome = time().'_'.$imagem['name']; // encripta o nome da imagem antes de ser salvo
			$i->setNome($alteraNome);
			$i->setDiretorio("../img/desaparecidos/".date('d-m-Y')."/");
			$uploadDir = $_SERVER['DOCUMENT_ROOT']."/Prototipo/visao/img/desaparecidos/".date('d-m-Y')."/";
	
			if(is_dir($uploadDir)){
				$img->saveToFile($uploadDir.$i->getNome(), 90); // salva a imagem renomeada diretorio indicado com 90% de qualidade
			}
			else{
				mkdir($uploadDir); 		// se o diretorio nao existir, cria um antes de salvar a imagem
				$img->saveToFile($uploadDir.$i->getNome(), 90);
			}
	
			return $i; // retorna o objeto imagem com diretorio e nome
		}
	
	}
	
	public function tratarImagemWideImageProcurado($imagem){
		if($imagem != ''){
	
	
			$img = WideImage::load($imagem['tmp_name']);
			//print_r($img);
			$img = $img->resize(640, 480, 'inside', 'any'); // redimensiona a imagem sem distorÃ§Ã£o
	
			// carrega o objeto imagem
			$i = new ImagemProcurado();
			$alteraNome = time().'_'.$imagem['name']; // encripta o nome da imagem antes de ser salvo
			$i->setNome($alteraNome);
			$i->setDiretorio("../img/procurados/".date('d-m-Y')."/");
			$uploadDir = $_SERVER['DOCUMENT_ROOT']."/Prototipo/visao/img/procurados/".date('d-m-Y')."/";
	
			if(is_dir($uploadDir)){
				$img->saveToFile($uploadDir.$i->getNome(), 90); // salva a imagem renomeada diretorio indicado com 90% de qualidade
			}
			else{
				mkdir($uploadDir); 		// se o diretorio nao existir, cria um antes de salvar a imagem
				$img->saveToFile($uploadDir.$i->getNome(), 90);
			}
	
			return $i; // retorna o objeto imagem com diretorio e nome
		}
	
	}
	
	/* funÃ§Ã£o para carregar imagem do servidor pegando o endereÃ§o e nome gravados no banco de dados */
	public function loadImagem($idNoticia){
			$this->banco->conectar();
			try {
				$sql = "SELECT * FROM imagem_noticia WHERE noticia_id = ".$idNoticia;
				$rs = $this->banco->executarConsulta($sql);
					
				if ($row = mysql_fetch_array($rs)) {
					$this->imagemNoticia->setIdImagem($row['id_imagem_noticia']);
					$this->imagemNoticia->setDiretorio($row['diretorio']);
					$this->imagemNoticia->setLegenda($row['legenda']);
					$this->imagemNoticia->setNome($row['nome_arquivo']);
					$noticia = new Noticia();
					$noticia->setIdNoticia($row['noticia_id']);
					$this->imagemNoticia->setNoticiaId($noticia);
					$this->imagemNoticia->setTamanho($row['tamanho']);
					
				}
				return $this->imagemNoticia;
			} catch (Exception $e) {
				$e->getMessage();
			}
			$this->conexao->desconectar();
		}//fim loadImagem
		
	public function editar(ImagemNoticia $imagem) {
		$this->banco->conectar();
		try {
			$sql = "UPDATE imagem_noticia SET
						nome_arquivo = '".$imagem->getNome()."',
						diretorio = '".$imagem->getDiretorio()."',
						tamanho = '".$imagem->getTamanho()."',
						legenda = '".$imagem->getLegenda()."',
						noticia_id = '".$imagem->getNoticiaId()->getIdNoticia()." ' 
						WHERE id_imagem_noticia = ".$imagem->getIdImagem();
			
			$retorno = $this->banco->executarSql($sql);
			
			return $retorno;
			if($retorno == TRUE){
				//redireciona para uma pagina ou manda mensagem ao usuário
			}
			else{
				//manda msg de erro ao usuario
			}
		}
		catch (Exception $e){
			$e->getMessage();
		}
		
		$this->banco->desconectar();
	}
}
